package comunicacion.simulador;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Parametros {	
	public double BETA;
	public double GAMMA;
	public double H;
	
	public double MAXIMA_VELOCIDAD_DIRECT;
	public double FACTOR_VARIACION_VELOCIDAD_DIRECT;
	
	public double TOLERANCIA_ANGULO;
	public double DISTANCIA_ACEPTABLE;;
	
	public Parametros(String nombreArchivoProperties) throws IOException {
		Properties properties = new Properties();	    
    	InputStream is = new FileInputStream(nombreArchivoProperties);
        properties.load(is);
    
	    if (properties.containsKey("BETA")) {
	    	BETA = Double.parseDouble(properties.getProperty("BETA"));
	    } else {
	    	avisarError("BETA");
	    }
	    
	    if (properties.containsKey("GAMMA")) {
	    	GAMMA = Double.parseDouble(properties.getProperty("GAMMA"));
	    } else {
	    	avisarError("GAMMA");
	    }
	    
	    if (properties.containsKey("H")) {
	    	H = Double.parseDouble(properties.getProperty("H"));
	    } else {
	    	avisarError("H");
	    }
	    
	    if (properties.containsKey("MAXIMA_VELOCIDAD_DIRECT")) {
	    	MAXIMA_VELOCIDAD_DIRECT = Double.parseDouble(properties.getProperty("MAXIMA_VELOCIDAD_DIRECT"));
	    } else {
	    	avisarError("MAXIMA_VELOCIDAD_DIRECT");
	    }
	    
	    if (properties.containsKey("FACTOR_VARIACION_VELOCIDAD_DIRECT")) {
	    	FACTOR_VARIACION_VELOCIDAD_DIRECT = Double.parseDouble(properties.getProperty("FACTOR_VARIACION_VELOCIDAD_DIRECT"));
	    } else {
	    	avisarError("FACTOR_VARIACION_VELOCIDAD_DIRECT");
	    }
	    
	    if (properties.containsKey("TOLERANCIA_ANGULO")) {
	    	TOLERANCIA_ANGULO = Double.parseDouble(properties.getProperty("TOLERANCIA_ANGULO"));
	    } else {
	    	avisarError("TOLERANCIA_ANGULO");
	    }
	    
	    if (properties.containsKey("DISTANCIA_ACEPTABLE")) {
	    	DISTANCIA_ACEPTABLE = Double.parseDouble(properties.getProperty("DISTANCIA_ACEPTABLE"));
	    } else {
	    	avisarError("DISTANCIA_ACEPTABLE");
	    }
	    
	}
	
	private void avisarError(String claveInexistente) throws IOException {
		throw new IOException("Falta propiedad " + claveInexistente + "en el archivo de propiedades del entorno");
	}
}
